int strStr(char* haystack, char* needle) {
    int H_len=strlen(haystack),N_len=strlen(needle);
    if(H_len==0)
        return 0;
    int next[10000];
    next[0]=-1;
    int i=0,j=-1;
    while(i<N_len-1)
    {
        if(j==-1||needle[i]==needle[j])
        {
            i++;
            j++;
            next[i]=j;
        }
        else j=next[j];
    }
    i=0;
    j=0;
    while(i<H_len&&j<N_len)
    {
        if(j==-1||haystack[i]==needle[j])
        {
            i++;
            j++;
        }
        else j=next[j];
    }
    if(j>=N_len)
        return i-N_len;
    else 
        return -1;

}